package com.eastfair.venueservice.service;

import com.eastfair.boot.service.SuperService;
import com.eastfair.core.base.R;
import com.eastfair.venuebooking.vo.ExhibitionSpaceVO;
import com.eastfair.venueservice.dto.ServiceProviderSpaceDTO;
import com.eastfair.venueservice.dto.ServiceProviderSpaceQuery;
import com.eastfair.venueservice.entity.ServiceProviderSpace;
import com.eastfair.venueservice.vo.ServiceProviderSpaceVO;

import java.util.List;

/**
 * <p>
 * 业务接口
 * 展会服务商场地关系
 * </p>
 *
 * @author linan
 * @date 2022-07-15
 */
public interface ServiceProviderSpaceService extends SuperService<ServiceProviderSpace> {

    /**
     * 查询服务商使用展厅
     * @param serviceProviderSpaceQuery
     * @return
     */
    R<List<ServiceProviderSpaceVO>> queryExhibitionManageDetail(ServiceProviderSpaceQuery serviceProviderSpaceQuery);

    /**
     * 展会ID，服务商ID查询服务商展厅关系列表.
     *
     * @param exhibitionManageId the exhibition manage id
     * @param serviceProviderId  the service provider id
     * @return the list
     */
    List<ServiceProviderSpaceVO> queryByExhibitionId(Long exhibitionManageId, Long serviceProviderId);

    /**
     * 展会ID，服务商ID 查询服务商在展会中负责的展厅列表.
     *
     * @param exhibitionManageId the exhibition manage id
     * @param serviceProviderId  the service provider id
     * @return the list
     */
    List<ExhibitionSpaceVO> queryExhibitionSpaceByExhibitionId(Long exhibitionManageId, Long serviceProviderId);

    List<String> querySpaceCodeListByExhibitionId(Long exhibitionManageId, Long serviceProviderId);

    /**
     * 展会服务商关系ID批量删除服务商展厅关系.
     *
     * @param exhibitionServiceProviderIdList the exhibition service provider id list
     * @return the boolean
     */
    boolean removeBatchByExhibitionServiceProviderId(List<Long> exhibitionServiceProviderIdList);

    /**
     * 保存服务商展厅关系.
     *
     * @param serviceProviderSpaceDTO the service provider space dto
     * @return the boolean
     */
    boolean saveServiceProviderSpace(ServiceProviderSpaceDTO serviceProviderSpaceDTO);

    /**
     * 保存服务商展厅关系.
     *
     * @param serviceProviderSpaceDTOList the service provider space dto list
     * @param exhibitionServiceProviderId the exhibition service provider id
     * @return the boolean
     */
    boolean saveBatch(List<ServiceProviderSpaceDTO> serviceProviderSpaceDTOList, Long exhibitionServiceProviderId);

    /**
     * 查询服务商使用的所有展厅
     * @param serviceProviderSpaceQuery
     * @return
     */
    List<ServiceProviderSpaceVO> queryServiceProviderAllSpace(ServiceProviderSpaceQuery serviceProviderSpaceQuery);
}
